package Validation;


import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 *
 * @author Gustavo C.
 * @author Rodrigo M.
 */
public class Data {

    public Data() {
    }

    public static boolean validarData(String dateStr)
            throws java.text.ParseException {
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Calendar cal = new GregorianCalendar();

        // gerando o calendar
        cal.setTime(df.parse(dateStr));

        // separando os dados da string para comparacao e validacao
        String[] data = dateStr.split("/");
        String dia = data[0];
        String mes = data[1];
        String ano = data[2];

        // testando se hah discrepancia entre a data que foi
        // inserida no calendar e a data que foi passada como
        // string. se houver diferenca, a data passada era
        // invalida
        if ((new Integer(dia)).intValue() != (new Integer(cal.get(Calendar.DAY_OF_MONTH))).intValue()) {
            // dia nao casou
            return (false);
        } else if ((new Integer(mes)).intValue() != (new Integer(cal.get(Calendar.MONTH) + 1)).intValue()) {
            // mes nao casou
            return (false);
        } else if ((new Integer(ano)).intValue() != (new Integer(cal.get(Calendar.YEAR))).intValue()) {
            // ano nao casou
            return (false);
        }

        return (true);
    }

    public static int calcIdade(Date dataNasc) {
        Date hoje = new Date();
        Calendar cal = Calendar.getInstance();

        cal.setTime(hoje);
        int day1 = cal.get(Calendar.DAY_OF_YEAR);
        int ano1 = cal.get(Calendar.YEAR);

        cal.setTime(dataNasc);
        int day2 = cal.get(Calendar.DAY_OF_YEAR);
        int ano2 = cal.get(Calendar.YEAR);

        int nAno = ano1 - ano2;

        if (day1 < day2) {
            nAno--; //Ainda não completou aniversario esse ano.
        }
        return nAno;
    }

        public static Date formataData(String data) throws Exception {
        if (data == null || data.equals(""))
            return null;

        Date date = null;
        try {
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            date = (java.util.Date)formatter.parse(data);
        } catch (ParseException e) {
            throw e;
        }
        return date;
    }



}
